﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IS2
{
    public partial class AltaAccidenteForm : Form
    {
        AutoCompleteStringCollection listaAreasRiesgo = new AutoCompleteStringCollection();


        public AltaAccidenteForm()
        {
            InitializeComponent();
            cargarDatos();


            //Autocompletar Areas de riesgo
            txtAreaId.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtAreaId.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            txtAreaId.AutoCompleteCustomSource = listaAreasRiesgo;


        }


        private void cargarDatos()
        {
            using (Model1Container ctx = new Model1Container())
            {
                var lista = (from a in ctx.AreaDeRiesgoSet
                             select a).ToList<AreaDeRiesgo>();
                foreach (AreaDeRiesgo s in lista)
                {
                    listaAreasRiesgo.Add(s.Identificador);
                    listaAreasRiesgo.Add(s.Nombre);
                }
            }
            for (int i=0;i<=100;i++)
            {
                comboBoxInvolucrados.Items.Add(i.ToString());
            }
            comboBoxInvolucrados.SelectedIndex = 0;
        }

        private void comboBoxInvolucrados_SelectedIndexChanged(object sender, EventArgs e)
        {
            
                DataSet ds = new DataSet();
                DataTable t = new DataTable("Involucrados");
                t.Columns.Add("Involucrado");
                t.Columns.Add("Impacto personal");
                for (int i = 0; i < comboBoxInvolucrados.SelectedIndex; i++)
                {
                    t.Rows.Add("", "");
                }
                ds.Tables.Add(t);
                dgInvolucrados.AutoGenerateColumns = false;
                dgInvolucrados.DataSource = t;
            
            

        }

        private void buttonGuardar_Click(object sender, EventArgs e)
        {
            using (Model1Container ctx = new Model1Container())
            {
                string nuevoId = txtAccID.Text;
                Accidente id = (from ac in ctx.AccidenteSet
                            where ac.Identificador == nuevoId
                            select ac).SingleOrDefault();

                if (id != null)
                {
                    DialogResult dialogResult = MessageBox.Show("Existe un Accidente registrado con el mismo identificador. ¿Desea guardar este Accidente con otro identificador?", null, MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        txtAccID.Text = "ACC_" + id.Id.ToString();
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        MessageBox.Show("Alta de accidente cancelada.");
                        this.Dispose();
                    }
                }
                else
                {

                    if (!listaAreasRiesgo.Contains(txtAreaId.Text))
                    {
                        DialogResult dialogResult = MessageBox.Show("No existe el Área de Riesgo solicitado.\n ¿Desea crearlo?", null, MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.Yes)
                        {
                            AreaDeRiesgoForm v = new AreaDeRiesgoForm();
                            v.ShowDialog();
                        }
                        else if (dialogResult == DialogResult.No)
                        {
                            MessageBox.Show("Alta de accidente cancelada.");
                            this.Dispose();
                        }
                    }

                    Accidente a = new Accidente();
                    a.Identificador = nuevoId;
                    ctx.AccidenteSet.AddObject(a);
                    ctx.SaveChanges();
                    MessageBox.Show("Accidente creado correctamente");
                }


                
            }
           
            
           
        }





    }
}
